package dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

/**
 * "Singleton" gerenciador de conexão.
 * <i>Desing pattern</i> utilizado para que a aplicação não lote todas as conexões do SQL.
 */
public class Conexao {

    private static Conexao conexao;
    private Connection conn = null;

    private String hostPostgre;
    private String database;
    private String usuario;
    private String senha;

    private void configureDatabase() {
        // TODO: criar uma conta específica no sql para somente a aplicação utilizar
        // limitar para select, updates e insert

        hostPostgre = "localhost";
        database = "sgfdg";
        usuario = "postgres";
        senha = "admin";
    }

    private Conexao() throws SQLException {
        try {
            Class.forName("org.postgresql.Driver");
            
            configureDatabase();
            conn = DriverManager.getConnection("jdbc:postgresql://" + hostPostgre + ":5432/" + database, usuario, senha);
                        
        } catch (ClassNotFoundException ex) {
            System.out.println(ex.getLocalizedMessage());
        }
    }

    /**
     * Obtém a conexão ao banco de dados.
     * @return Connection ao banco de dados.
     */
    public static Connection getConexao() throws SQLException {
        if (conexao == null) {
            conexao = new Conexao();
        }

        return conexao.conn;
    }
}
